等参单元与坐标变换(Julia实现)

您所在的位置:网站首页 坐标变换 雅可比 等参单元与坐标变换(Julia实现)

等参单元与坐标变换(Julia实现)

2024-07-17 14:38| 来源: 网络整理| 查看: 265

等参单元与坐标变化 等参单元的概念坐标变换几何方程及雅可比矩阵雅可比矩阵实现(JuliaFEM) 矩形单元比三角形单元有更高的精度,但它不适应不规则形状。而任意直线四边形单元可以适应不规则形状。但问题是,如果有一边的边界方程为 y = b x + c y=bx+c y=bx+c,代入位移插值函数 u = α 1 + α 2 x + α 3 y + α 4 x y = α 1 + α 2 x + α 3 ( b x + c ) + α 4 x ( b x + c ) = β 1 + β 2 x + β 3 x 2 u=α_{1}+α_{2}x+α_{3}y+α_{4}xy=α_{1}+α_{2}x+α_{3}(bx+c)+α_{4}x(bx+c)=β_{1}+β_{2}x+β_{3}x^{2} u=α1​+α2​x+α3​y+α4​xy=α1​+α2​x+α3​(bx+c)+α4​x(bx+c)=β1​+β2​x+β3​x2,显然,在边界上位移不再是线性分布,因而不能由节点位移惟一确定,即:即使相邻两单元节点位移相同,也不能保证边界位移连续。这就限制了四边形单元的应用范围。因此,为了实际应用,寻找适当方式,将规则单元转化为曲线单元,是非常必要的。普遍采用的方法是 等参变换,即单元 几何形状和单元内的 位移函数采用相同的数目的结点参数和插值函数进行变换。采用等参变换后,关键问题是将整体坐标系里的单元刚度、荷载等单元特性变换为局部坐标系中计算。

等参单元的概念

如图所示的两套坐标系,一套是 Oxy ,用于实际单元,称为子单元;一套是Oξη ,它是标准后化的正方形单元,称为母单元。从母单元项子单元变换,实际上就是建立两个坐标系之间的变换关系,即: A ′ ( x , y ) = f ( A ( ξ , η ) ) A^{'}(x,y)=f(A(ξ,η)) A′(x,y)=f(A(ξ,η)) 在这里插入图片描述

将整体坐标用插值形式表示,即: x = ∑ i = 1 N i ( ξ , η ) x i , y = ∑ i = 1 N i ( ξ , η ) y i x=\sum_{i=1}N_{i}(ξ,η)x_{i},y=\sum_{i=1}N_{i}(ξ,η)y_{i} x=i=1∑​Ni​(ξ,η)xi​,y=i=1∑​Ni​(ξ,η)yi​ ( x i , y i ) (x_{i},y_{i}) (xi​,yi​)为整体坐标系下各顶点的坐标;其中,Ni称为插值函数(形函数)。通过这一变换,对母单元上每一点(ξ,η)可以在实际单元中找到一对应点(x,y),这样就在两个单元间建立了一一对应关系。 在实际单元中建立位移函数的插值形式: (1) u = ∑ i = 1 N i ( ξ , η ) u i , v = ∑ i = 1 N i ( ξ , η ) v i u=\sum_{i=1}N_{i}(ξ,η)u_{i},v=\sum_{i=1}N_{i}(ξ,η)v_{i}\tag{1} u=i=1∑​Ni​(ξ,η)ui​,v=i=1∑​Ni​(ξ,η)vi​(1) 因为坐标变换和位移变换都用同样个数的相应的节点值做参数,并且具有完全相同的形函数作为变换系数,所以称这种单元为等参数单元。

坐标变换

(2) x = ∑ i = n N i ( ξ , η ) x i ( n = i , j , k , m . . . ) , y = ∑ i = n N i ( ξ , η ) y i ( n = i , j , k , m . . . ) x=\sum_{i=n}N_{i}(ξ,η)x_{i}(n=i,j,k,m...), y=\sum_{i=n}N_{i}(ξ,η)y_{i}(n=i,j,k,m...) \tag{2} x=i=n∑​Ni​(ξ,η)xi​(n=i,j,k,m...),y=i=n∑​Ni​(ξ,η)yi​(n=i,j,k,m...)(2)

几何方程及雅可比矩阵

(3) { ε } = { ε x ε y γ x y } = { ∂ u ∂ x ∂ v ∂ y ∂ v ∂ x + ∂ u ∂ y } \left\{\begin{matrix} ε \end{matrix} \right\}= \left\{\begin{matrix} ε_{x}\\ ε_{y}\\ γ_{xy}\\ \end{matrix} \right\}= \left\{\begin{matrix} \frac{\partial u}{\partial x}\\ \frac{\partial v}{\partial y}\\ \frac{\partial v}{\partial x}+\frac{\partial u}{\partial y}\\ \end{matrix} \right\}\tag{3} {ε​}=⎩⎨⎧​εx​εy​γxy​​⎭⎬⎫​=⎩⎨⎧​∂x∂u​∂y∂v​∂x∂v​+∂y∂u​​⎭⎬⎫​(3) 将(1)式带入(3)式可得: { ε } = [ ∂ ∂ x 0 0 ∂ ∂ y ∂ ∂ y ∂ ∂ x ] ∗ [ N 1 N 2 N 3 N 4 . . . ] ∗ [ u 1 v 1 u 2 v 2 u 3 v 3 u 4 v 4 . . . . . . ] \left\{\begin{matrix} ε \end{matrix} \right\}= \left[ \begin{matrix} \frac{\partial }{\partial x};0\\ 0;\frac{\partial }{\partial y}\\ \frac{\partial }{\partial y};\frac{\partial }{\partial x} \end{matrix} \right]* \left[\begin{matrix} N_{1};N_{2};N_{3};N_{4};... \end{matrix} \right]* \left[\begin{matrix} u_{1};v_{1}\\ u_{2};v_{2}\\ u_{3};v_{3}\\ u_{4};v_{4}\\ ...;...\\ \end{matrix} \right] {ε​}=⎣⎡​∂x∂​0∂y∂​​0∂y∂​∂x∂​​⎦⎤​∗[N1​​N2​​N3​​N4​​...​]∗⎣⎢⎢⎢⎢⎡​u1​u2​u3​u4​...​v1​v2​v3​v4​...​⎦⎥⎥⎥⎥⎤​ 求上式 ∂ N i ∂ x , ∂ N i ∂ y \frac{\partial N_{i}}{\partial x},\frac{\partial N_{i}}{\partial y} ∂x∂Ni​​,∂y∂Ni​​,由复合函数求导可得: (4) ∂ N i ∂ ξ = ∂ N i ∂ x ∂ x ∂ ξ + ∂ N i ∂ y ∂ y ∂ ξ ∂ N i ∂ η = ∂ N i ∂ x ∂ x ∂ η + ∂ N i ∂ y ∂ y ∂ η \frac{\partial N_{i}}{\partial ξ}=\frac{\partial N_{i}}{\partial x}\frac{\partial x}{\partial ξ}+\frac{\partial N_{i}}{\partial y}\frac{\partial y}{\partial ξ}\newline \newline\frac{\partial N_{i}}{\partial η}=\frac{\partial N_{i}}{\partial x}\frac{\partial x}{\partial η}+\frac{\partial N_{i}}{\partial y}\frac{\partial y}{\partial η}\tag{4} ∂ξ∂Ni​​=∂x∂Ni​​∂ξ∂x​+∂y∂Ni​​∂ξ∂y​∂η∂Ni​​=∂x∂Ni​​∂η∂x​+∂y∂Ni​​∂η∂y​(4) 即: { ∂ N i ∂ ξ ∂ N i ∂ η } = [ J ] { ∂ N i ∂ x ∂ N i ∂ y } \left\{\begin{matrix} \frac{\partial N_{i}}{\partial ξ}\\ \frac{\partial N_{i}}{\partial η} \end{matrix} \right\}=[J] \left\{\begin{matrix} \frac{\partial N_{i}}{\partial x}\\ \frac{\partial N_{i}}{\partial y} \end{matrix} \right\} {∂ξ∂Ni​​∂η∂Ni​​​}=[J]{∂x∂Ni​​∂y∂Ni​​​} 其中矩阵[J]为雅可比矩阵 [ J ] = [ ∂ x ∂ ξ ∂ y ∂ ξ ∂ x ∂ η ∂ y ∂ η ] = [ ∑ ∂ N i ∂ ξ x i ∑ ∂ N i ∂ ξ y i ∑ ∂ N i ∂ η x i ∑ ∂ N i ∂ η y i ] = { ∂ N 1 ∂ ξ ∂ N 2 ∂ ξ ∂ N 3 ∂ ξ ∂ N 4 ∂ ξ ∂ N 1 ∂ η ∂ N 2 ∂ η ∂ N 3 ∂ η ∂ N 4 ∂ η } ∗ { x 1 y 1 x 2 y 2 x 3 y 3 x 4 y 4 } \left[\begin{matrix} J \end{matrix} \right]= \left[\begin{matrix} \frac{\partial x}{\partial ξ};\frac{\partial y}{\partial ξ}\\ \frac{\partial x}{\partial η};\frac{\partial y}{\partial η}\\ \end{matrix} \right]=\left[\begin{matrix} \sum\frac{\partial N_{i}}{\partial ξ}x_{i};\sum\frac{\partial N_{i}}{\partial ξ}y_{i}\\ \sum\frac{\partial N_{i}}{\partial η}x_{i};\sum\frac{\partial N_{i}}{\partial η}y_{i}\\ \end{matrix} \right]= \left\{\begin{matrix} \frac{\partial N_{1}}{\partial ξ};\frac{\partial N_{2}}{\partial ξ};\frac{\partial N_{3}}{\partial ξ};\frac{\partial N_{4}}{\partial ξ}\\ \frac{\partial N_{1}}{\partial η};\frac{\partial N_{2}}{\partial η};\frac{\partial N_{3}}{\partial η};\frac{\partial N_{4}}{\partial η}\\ \end{matrix} \right\}*\left\{\begin{matrix} x_{1};y_{1}\\ x_{2};y_{2}\\ x_{3};y_{3}\\ x_{4};y_{4}\\ \end{matrix} \right\} [J​]=[∂ξ∂x​∂η∂x​​∂ξ∂y​∂η∂y​​]=[∑∂ξ∂Ni​​xi​∑∂η∂Ni​​xi​​∑∂ξ∂Ni​​yi​∑∂η∂Ni​​yi​​]={∂ξ∂N1​​∂η∂N1​​​∂ξ∂N2​​∂η∂N2​​​∂ξ∂N3​​∂η∂N3​​​∂ξ∂N4​​∂η∂N4​​​}∗⎩⎪⎪⎨⎪⎪⎧​x1​x2​x3​x4​​y1​y2​y3​y4​​⎭⎪⎪⎬⎪⎪⎫​ 因此: { ∂ N i ∂ x ∂ N i ∂ y } = [ J ] − 1 ∗ { ∂ N i ∂ ξ ∂ N i ∂ η } \left\{\begin{matrix} \frac{\partial N_{i}}{\partial x}\\ \frac{\partial N_{i}}{\partial y} \end{matrix} \right\}=[J]^{-1}*\left\{\begin{matrix} \frac{\partial N_{i}}{\partial ξ}\\ \frac{\partial N_{i}}{\partial η} \end{matrix} \right\} {∂x∂Ni​​∂y∂Ni​​​}=[J]−1∗{∂ξ∂Ni​​∂η∂Ni​​​}

雅可比矩阵实现(JuliaFEM)

在JuliaFEM的FEMBasis包中math.jl中实现了雅可比矩阵的计算,函数需要三个参数分别为:

单元类型整体坐标系下节点的坐标值,即上述 ( x i , y i ) (x_{i},y_{i}) (xi​,yi​)待求点的局部坐标系下的坐标值

首先需要计算 ∂ N i ∂ ξ , ∂ N i ∂ η \frac{\partial N_{i}}{\partial ξ},\frac{\partial N_{i}}{\partial η} ∂ξ∂Ni​​,∂η∂Ni​​,需要用到eval_dbasis(B, xi)函数,B为单元类型,xi为待求点的局部坐标系下的坐标值。详见有限元形函数及JuliaFEM中的实现方式。

''' jacobian(B, X, xi) Given basis B, calculate jacobian at xi. # Example #单元类型 B = Quad4() #整体坐标系下的节点坐标 X = ([0.0, 0.0], [1.0, 0.0], [1.0, 1.0], [0.0, 1.0]) #(0.0, 0.0)为待求点的局部坐标系下的坐标 jacobian(B, X, (0.0, 0.0)) # output 2×2 Array{Float64,2}: 0.5 0.0 0.0 0.5 ''' function jacobian(B, X, xi) #dB求dN/dξ,dN/dη dB = eval_dbasis(B, xi) dim1, nbasis = size(B) dim2 = length(first(X)) J = zeros(dim1, dim2) for i=1:dim1 for j=1:dim2 for k=1:nbasis #分项相乘后累加 J[i,j] += dB[i,k]*X[k][j] end end end return J end

grad函数是对 { ∂ N i ∂ x ∂ N i ∂ y } \left\{\begin{matrix} \frac{\partial N_{i}}{\partial x}\\ \frac{\partial N_{i}}{\partial y} \end{matrix} \right\} {∂x∂Ni​​∂y∂Ni​​​}的求解,

''' grad(B, X, xi) Given basis B, calculate gradient dN/dX at xi. # Example B = Quad4() X = ([0.0, 0.0], [1.0, 0.0], [1.0, 1.0], [0.0, 1.0]) grad(B, X, (0.0, 0.0)) # output 2×4 Array{Float64,2}: -0.5 0.5 0.5 -0.5 -0.5 -0.5 0.5 0.5 ''' function grad(B, X, xi) J = jacobian(B, X, xi) dB = eval_dbasis(B, xi) G = inv(J) * dB return G end

由(4)式可知, { ε } = { ∂ u ∂ x ∂ v ∂ y ∂ v ∂ x + ∂ u ∂ y } \left\{\begin{matrix} ε \end{matrix} \right\}=\left\{\begin{matrix} \frac{\partial u}{\partial x}\\ \frac{\partial v}{\partial y}\\ \frac{\partial v}{\partial x}+\frac{\partial u}{\partial y}\\ \end{matrix} \right\} {ε​}=⎩⎨⎧​∂x∂u​∂y∂v​∂x∂v​+∂y∂u​​⎭⎬⎫​ u,v为各节点的整体坐标系的位移,在math.jl中另一个grad(B, T, X, xi)函数即用于求解上式的应变,此处的T为单元各节点的整体坐标系下的位移向量。求得的结果为: [ ∑ ∂ N i ∂ x u i ∑ ∂ N i ∂ x v i ∑ ∂ N i ∂ y u i ∑ ∂ N i ∂ y v i ] = [ ∂ u ∂ x ∂ v ∂ x ∂ u ∂ y ∂ v ∂ y ] \left[ \begin{matrix} \sum\frac{\partial N_{i}}{\partial x}u_{i};\sum\frac{\partial N_{i}}{\partial x}v_{i}\\ \sum\frac{\partial N_{i}}{\partial y}u_{i};\sum\frac{\partial N_{i}}{\partial y}v_{i}\\ \end{matrix} \right]= \left[ \begin{matrix} \frac{\partial u}{\partial x};\frac{\partial v}{\partial x}\\ \frac{\partial u}{\partial y};\frac{\partial v}{\partial y}\\ \end{matrix} \right] [∑∂x∂Ni​​ui​∑∂y∂Ni​​ui​​∑∂x∂Ni​​vi​∑∂y∂Ni​​vi​​]=[∂x∂u​∂y∂u​​∂x∂v​∂y∂v​​]

grad(B, T, X, xi) Calculate gradient of `T` with respect to `X` in point `xi` using basis `B`. # Example B = Quad4() X = ([0.0, 0.0], [1.0, 0.0], [1.0, 1.0], [0.0, 1.0]) u = ([0.0, 0.0], [1.0, -1.0], [2.0, 3.0], [0.0, 0.0]) grad(B, u, X, (0.0, 0.0)) # output 2×2 Array{Float64,2}: 1.5 0.5 1.0 2.0 """ function grad(B, T, X, xi) #B的行函数的梯度 G = grad(B, X, xi) nbasis = length(B) #与[T]的内积 dTdX = sum(kron(G[:,i], T[i]') for i=1:nbasis) return dTdX' end


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3